home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / editors / emacs / xemacs / xemacs-1.006 / xemacs-1 / lib / xemacs-19.13 / info / ange-ftp.info next >
Encoding:
GNU Info File  |  1995-09-01  |  57.0 KB  |  1,254 lines

  1. This is Info file ../info/ange-ftp.info, produced by Makeinfo-1.55 from
  2. the input file ange-ftp.texinfo.
  3.  
  4. 
  5. File: ange-ftp.info,  Node: Top,  Next: What is ange-ftp?,  Prev: (dir),  Up: (dir)
  6.  
  7. Ange-ftp
  8. ********
  9.  
  10.    This file documents ange-ftp, a system for transparent file-transfer
  11. between remote hosts using the FTP protocol within GNU Emacs.
  12.  
  13.    This info is current to Version 4.2 of Ange-ftp.
  14.  
  15.    Documentation version: 1.32
  16.  
  17.    Copyright (C) 1991, 1992 Free Software Foundation, Inc.
  18.  
  19.    Permission is granted to make and distribute verbatim copies of this
  20. manual provided the copyright notice and this permission notice are
  21. preserved on all copies.
  22.  
  23.    Permission is granted to copy and distribute modified versions of
  24. this manual under the conditions for verbatim copying, provided that the
  25. entire resulting derived work is distributed under the terms of a
  26. permission notice identical to this one.
  27.  
  28. * Menu:
  29.  
  30. * What is ange-ftp?::    A brief introduction to ange-ftp. Credits.
  31. * Installing ange-ftp:: Where to find it, and how to use it.
  32. * Using ange-ftp::    Ange-ftp - a users' guide.
  33. * Getting help::    Mailing lists and newsgroups.
  34. * Bugs::        Known bugs, and a wish list.
  35.  
  36. Indices:
  37. * Concept Index::
  38. * Variable and command index::
  39.  
  40. 
  41. File: ange-ftp.info,  Node: What is ange-ftp?,  Next: Installing ange-ftp,  Prev: Top,  Up: Top
  42.  
  43. Introducing ange-ftp.
  44. *********************
  45.  
  46.    Ange-ftp is a system for transparent file-transfer between remote
  47. UNIX, VMS, CMS or MTS hosts using FTP. This means that you can edit,
  48. copy and otherwise manipulate files on any machine you have access to
  49. from within GNU Emacs as if it were a local file. Ange-ftp works by
  50. introducing an extended filename syntax, and overloading functions such
  51. as `insert-file-contents' so that accessing a remote file causes
  52. appropriate commands to be sent to an FTP process. Ange-ftp works with
  53. Dired (and in particular Sebastian Kremer's Tree Dired) to facilitate
  54. directory browsing and multiple file transfer from remote hosts.
  55.  
  56.    The author of ange-ftp is Andy (Ange) Norman
  57. (`ange@hplb.hpl.hp.com').  Many people have sent in enhancements, and
  58. Ange has been kept quite busy testing them and incorporating them into
  59. ange-ftp. Current members of the Ange-Ftp Hall of Fame include:
  60.  
  61.    * Many thanks to Roland McGrath for improving the filename syntax
  62.      handling, for suggesting many enhancements and for numerous
  63.      cleanups to the code.
  64.  
  65.    * Thanks to Jamie Zawinski for bugfixes and for ideas such as
  66.      gateways.
  67.  
  68.    * Thanks to Ken Laprade for improved `.netrc' parsing and password
  69.      reading, and Dired/shell autoloading.
  70.  
  71.    * Thanks to Sebastian Kremer for tree dired support and for many
  72.      ideas and bugfixes.
  73.  
  74.    * Thanks to Joe Wells for bugfixes, non-UNIX system support, VOS
  75.      support, and hostname completion.
  76.  
  77.    * Thanks to Nakagawa Takayuki for many good ideas,
  78.      filename-completion, help with file-name expansion, efficiency
  79.      worries, stylistic concerns and many bugfixes.
  80.  
  81.    * Thanks to Sandy Rutherford who re-wrote most of ange-ftp to
  82.      support VMS, MTS, CMS and UNIX-dls.  Sandy also added
  83.      dired-support for non-UNIX OS and auto-recognition of the host
  84.      type.
  85.  
  86.    * Also, thanks to Keith Waclena, Mark D. Baushke, Terence Kelleher,
  87.      Ping Zhou, Edward Vielmetti, Jack Repenning, Mike Balenger, Todd
  88.      Kaufmann, Kjetil Svarstad, Tom Wurgler, Linus Tolke, Niko Makila,
  89.      Carl Edman, Bill Trost, Dave Brennan, Dan Jacobson, Andy Scott,
  90.      Steve Anderson, Sanjay Mathur, the folks on the ange-ftp-lovers
  91.      mailing list and many others whose names have been forgotten who
  92.      have helped to debug and fix problems with `ange-ftp.el'.
  93.  
  94.    Finally, this info file was written by Dave Smith
  95. (`dsmith@stats.adelaide.edu.au'), although large chunks of it
  96.  
  97. (such as most of this node :-)
  98.  
  99. are plagiarised straight out of the extensive comments section of
  100. `ange-ftp.el'.
  101.  
  102. 
  103. File: ange-ftp.info,  Node: Installing ange-ftp,  Next: Using ange-ftp,  Prev: What is ange-ftp?,  Up: Top
  104.  
  105. Installing ange-ftp
  106. *******************
  107.  
  108.    If you don't already have a copy of ange-ftp, or you want a later
  109. version, ange-ftp is pretty easy to get hold of. FTP is the probably the
  110. simplest method, but other options such as mail are available.
  111.  
  112.    Once you have the Emacs-Lisp source, there are a few customisations
  113. you might need to make. The ideal configuration is to have the FTP
  114. process running on the same machine as you are running Emacs on, but
  115. this is not always possible since some machines cannot access hosts
  116. outside the local network. In this case, the FTP process needs to be
  117. run on a machine which *does* have access to the local world -- this is
  118. called the *gateway host*. Ange-ftp has facilities to make use of a
  119. gateway host when accessing remote hosts.
  120.  
  121. * Menu:
  122.  
  123. * Obtaining source code::    Where to find the ange-ftp source.
  124. * Installing source::        Where to put it, how to load it.
  125. * Using a gateway::        For when your local machine has limited access.
  126. * Other options::        More user variables to twiddle.
  127.  
  128. 
  129. File: ange-ftp.info,  Node: Obtaining source code,  Next: Installing source,  Up: Installing ange-ftp
  130.  
  131. How to get the ange-ftp source code
  132. ===================================
  133.  
  134.    The latest version of ange-ftp should always be available for
  135. anonymous FTP from
  136.      alpha.gnu.ai.mit.edu
  137.  
  138. in the file
  139.      ange-ftp/ange-ftp.tar.Z
  140.  
  141. (which includes both `ange-ftp.el' and this texinfo file.) In ange-ftp
  142. notation, that's
  143.      /anonymous@alpha.gnu.ai.mit.edu:ange-ftp/ange-ftp.tar.Z
  144.  
  145.    Alternatively, ange-ftp is also part of the Emacs-Lisp Archive on
  146. `archive.cis.ohio-state.edu'. The latest version should always be
  147. available on this site, but the Lisp-Code Directory entry is not always
  148. up to date; it currently reads:
  149.      ange-ftp (3.112)  91-08-12
  150.       Andy Norman, <ange@hplb.hpl.hp.com>
  151.       archive.cis.ohio-state.edu:
  152.         /pub/gnu/emacs/elisp-archive/as-is/ange-ftp.el.Z
  153.      transparent FTP Support for GNU Emacs
  154.  
  155.    Ange-ftp can also be found at:
  156.      ugle.unit.no:/pub/gnu/emacs-lisp/ange-ftp.el.Z
  157.  
  158.    Failing these, someone on the ange-ftp mailing list (*Note Getting
  159. help::) or the author himself (*Note What is ange-ftp?::) may be able to
  160. help you find the latest version.
  161.  
  162.    If you intend to do a lot of browsing though archive sites it is
  163. definitely worth your while installing Sebastian Kremer's Tree Dired
  164. along with ange-ftp (if you haven't done it already). Tree Dired will
  165. work with ange-ftp without any modifications: all you need to do is
  166. follow the installation instructions that come with the package. The
  167. Tree Dired package comes complete with the latest version of ange-ftp,
  168. and is available for anonymous FTP from the following sites:
  169.      ftp.thp.Uni-Koeln.DE:/pub/gnu/emacs/diredall.tar.Z  (134.95.64.1)
  170.      ftp.cs.buffalo.edu:pub/Emacs/diredall.tar.Z
  171.  
  172. Alternatively, you can get in touch with Sebastian himself using his
  173. e-mail address: `sk@thp.Uni-Koeln.DE'.
  174.  
  175. 
  176. File: ange-ftp.info,  Node: Installing source,  Next: Using a gateway,  Prev: Obtaining source code,  Up: Installing ange-ftp
  177.  
  178. Installing the source
  179. =====================
  180.  
  181.    Installation is simply a matter of copying the file `ange-ftp.el' to
  182. a directory in your load-path. If you don't already have a load-path,
  183. this is probably a good time to make one. Just create a directory (say,
  184. `~/elisp') in which you plan to keep your Emacs-Lisp files. Then place
  185. the following line in your `.emacs':
  186.      (setq load-path (cons (expand-file-name "~/elisp") load-path))
  187.  
  188. The `expand-file-name' is *important* -- omitting it is a common reason
  189. why load-paths do not work.
  190.  
  191.    Once you've copied `ange-ftp.el' to the appropriate directory, it is
  192. recommended to byte-compile it, with `M-x byte-compile-file'. Then
  193. place the line
  194.      (require 'ange-ftp)
  195.  
  196. in your `.emacs' (*after* the line which modifies your load-path, of
  197. course!) It's that simple.
  198.  
  199.    The above instructions should allow you to access all hosts that your
  200. local machine can access. If your local host has limited access,
  201. however, you may wish to have ange-ftp working through a gateway
  202. machine. If so, read on. Otherwise, *Note Using ange-ftp:: to get
  203. started using ange-ftp.
  204.  
  205. 
  206. File: ange-ftp.info,  Node: Using a gateway,  Next: Other options,  Prev: Installing source,  Up: Installing ange-ftp
  207.  
  208. Using a gateway
  209. ===============
  210.  
  211.    Suppose you are running Emacs (and ange-ftp, of course) on a machine
  212. X (let's call it the `local host') and you want to access a file on a
  213. machine Z (which we will call the `remote host'). Unfortunately, X does
  214. not have FTP access to Z: when you try a manual FTP something like the
  215. following happens:
  216.      X$ ftp Z.foo.bar.com
  217.      ftp: connect: Host is unreachable
  218.  
  219. However, X *does* have access to a machine Y (the `gateway machine')
  220. which *can* access Z. Fortunately, you have an account on the gateway
  221. machine, and so the solution is to login to Y, ftp to Z, download the
  222. file you want from Z to Y, and then copy it from Y to the local host,
  223. X. This can get a bit tedious, to say the least, but fortunately
  224. ange-ftp can do all the hard work for you.
  225.  
  226.    Firstly, you need to set the variable `ange-ftp-gateway-host' to the
  227. name of the gateway machine. The name should be the one that the local
  228. host recognises, that is, the name you use with `login' so that it
  229. works.
  230.      (setq ange-ftp-gateway-host "Y.local.lan.edu")
  231.  
  232. Since you only need to go through these convolutions for remote hosts
  233. that the local host can't access directly, you can set the variable
  234. `ange-ftp-local-host-regexp' to a regular expression which matches
  235. those hostnames that X can access, but does not match those hosts that
  236. only the gateway can access. In other words, if the host you are trying
  237. to access matches `ange-ftp-local-host-regexp', the FTP process will be
  238. run on the local machine, otherwise it will be run on the gateway
  239. machine. For example
  240.      (setq ange-ftp-local-host-regexp "\\.hp\\.com$\\|^[^.]*$")
  241.  
  242. will match all hosts that are in the `.hp.com' domain, or don't have an
  243. explicit domain in their name, but will fail to match hosts with
  244. explicit domains or that are specified by their IP address.
  245.  
  246.    The next step is to determine whether you have a smart gateway, that
  247. is, if the FTP process on the gateway will accept commands of the form
  248. `USER user@host'. You can test this by trying a manual FTP:
  249.      X$ ftp -n Y.local.lan.edu
  250.      Connected to Y.local.lan.edu
  251.      220 Y.local.lan.edu FTP server (Version ?.??? some-date) ready.
  252.      ftp> user myname@Z.foo.bar.com
  253.  
  254. If you then got a message like:
  255.      331 Password required for myname@Z.foo.bar.com
  256.      Password:
  257.      530 Login incorrect.
  258.      Login failed.
  259.  
  260. then you *don't* have a smart gateway. If you do, then something else
  261. happens - but since it doesn't work for me I can't say what!  Anyway,
  262. if you do have a smart gateway, put the line
  263.      (setq ange-ftp-smart-gateway t)
  264.  
  265. in your `.emacs'. You may also wish to set the variable
  266. `ange-ftp-smart-gateway-port' to the port of the gateway machine to use
  267. when smart gateway is in operation, but the default of 21 will probably
  268. be fine. In any case, your installation has finished, so *Note Using
  269. ange-ftp:: now - the rest of this section is of no use to you. If on
  270. the other hand you don't have a smart gateway, put the line
  271.      (setq ange-ftp-smart-gateway nil) ; this is the default
  272.  
  273. in your `.emacs' and read on.
  274.  
  275.    Since to get files from Z to X we need to copy from Z to Y, and then
  276. from Y to X, we need a place to store files on Y which is also
  277. accessible by X, i.e. we need a directory which is mounted on both X and
  278. Y. Since we are assuming that the local host and the gateway machine are
  279. on the same local network, it's fairly likely that this is the case
  280. thanks to NFS.  If such a directory exists, then ange-ftp can transfer
  281. files from Z to X simply by FTP'ing from Z to the temporary directory
  282. on Y, and then using a normal (local) copy from the image of the
  283. temporary directory on X to the destination directory. Unfortunately,
  284. ange-ftp requires that this temporary directory has the *same* name on
  285. both the local and gateway machines, so you might need to do some
  286. twiddling with symbolic links, or ask your sysadmin to set something up
  287. with NFS. Once you have found such a directory, set the variable
  288. `ange-ftp-gateway-tmp-name-template' to the name of this directory plus
  289. an identifying filename prefix. For example:
  290.      (setq ange-ftp-gateway-tmp-name-template "/nfs/hplose/ange/ange-ftp")
  291.  
  292. where `/nfs/hplose/ange' is a directory that is shared between the
  293. gateway machine Y and the local machine X.
  294.  
  295.    The next step is to find a means of getting an FTP process running on
  296. the gateway machine. The simplest method is to spawn a remote shell
  297. using `remsh' or `rsh' or their equivalent. Unfortunately, this doesn't
  298. always work -- try the following:
  299.      X$ rsh Y.local.lan.edu ftp
  300.  
  301. On my system, this command simply hangs. On others, it might be
  302. disallowed for security reasons. If it doesn't work for you, then skip
  303. the rest of this paragraph. If it does, then you should set then
  304. variable `ange-ftp-gateway-program' to the name of the program used to
  305. spawn a remote shell. The default is `"remsh"' on HP-UX machines, and
  306. `"rsh"' otherwise. You should also set
  307. `ange-ftp-gateway-program-interactive' to `nil':
  308.      (setq ange-ftp-gateway-program "rsh")
  309.      (setq ange-ftp-gateway-program-interactive nil)
  310.  
  311. and now your installation is complete.
  312.  
  313.    Since spawning a remote shell didn't work, ange-ftp needs to actually
  314. login to the gateway machine to run ftp, the same as you would do if you
  315. were running ftp manually. So you need to set the variable
  316. `ange-ftp-gateway-program' to the name of the program that lets you log
  317. onto the gateway machine -- probably `"rlogin"' or `"telnet"':
  318.      (setq ange-ftp-gateway-program "rlogin")
  319.  
  320. Now set the variable `ange-ftp-gateway-prompt-pattern' to a regular
  321. expression that matches the prompt you get when you login to the gateway
  322. machine.  Be very specific here; this regexp must not match *anything*
  323. in your login banner except this prompt.  `shell-prompt-pattern' is far
  324. too general as it appears to match some login banners from Sun
  325. machines. For example:
  326.      (setq ange-ftp-gateway-prompt-pattern "^[^$]*\\$ *")
  327.  
  328. You also need to set the variable `ange-ftp-gateway-program-interactive'
  329. to `t' to let ange-ftp know that it has to "hand-hold" the login to the
  330. gateway machine:
  331.      (setq ange-ftp-gateway-program-interactive t)
  332.  
  333. Now comes a slightly tricky bit. You need to set the variable
  334. `ange-ftp-gateway-setup-term-command' to a UNIX command that will put
  335. the pty connected to the gateway machine into a no-echoing mode, and
  336. will strip off carriage-returns from output from the gateway machine.
  337. The default is `"stty -onlcr -echo\n"' for HP-UX machines, and `"stty
  338. -echo nl\n"' otherwise. So
  339.      (setq ange-ftp-gateway-setup-term-command "stty -echo nl\n")
  340.  
  341. will probably work. If it does, then you're done.  There's a bit of a
  342. problem for `tcsh' users, though: in some versions of `tcsh', the "tty
  343. sanity checking" feature prevents the above commands from working. In
  344. this case, an easy fix is to invoke `csh' first, and then run the
  345. `stty':
  346.      (setq ange-ftp-gateway-setup-term-command  "exec csh\nstty -echo nl\n")
  347.    or maybe
  348.      (setq ange-ftp-gateway-setup-term-command  "(stty -echo nl; csh)\n")
  349.  
  350. may well do the trick. When using this method, synchronisation may be a
  351. problem: if your gateway machine is slow in responding, when ange-ftp is
  352. ready for (and indeed has already sent) FTP commands, your machine may
  353. still be setting up. This can cause ange-ftp to think that the FTP has
  354. had an error, and abort. One solution is to set `ange-ftp-skip-msgs' (a
  355. regular expression matching messages from the ftp process that can be
  356. ignored) so that any line ending in `^M' (carriage-returns) will be
  357. ignored (since the `stty' hasn't come into effect yet) and also to
  358. ignore any lines beginning with your prompt (since this means the
  359. terminal setup is still in progress):
  360.      (setq ange-ftp-skip-msgs
  361.        (concat "\\|^.*\C-M$\\|" ange-ftp-gateway-prompt-pattern
  362.                                                    ange-ftp-skip-msgs))
  363.  
  364. Unfortunately, this can also mean that sometimes ange-ftp won't
  365. recognise a *real* error, and simply hang - but if that ever happens
  366. `C-g' might get you out of it.
  367.  
  368. 
  369. File: ange-ftp.info,  Node: Other options,  Prev: Using a gateway,  Up: Installing ange-ftp
  370.  
  371. Other user options
  372. ==================
  373.  
  374.    Here are the other user options available in ange-ftp:
  375.  
  376.    `ange-ftp-netrc-filename': The name of a file in `netrc(5)' format
  377. that ange-ftp will use to match hostnames, users and their respective
  378. passwords.  Hostnames specified here are also used for hostname
  379. completion.  The default is `"~/.netrc"'.
  380.  
  381.    `ange-ftp-default-user': If this is a string, it is the username to
  382. use when none is specified in a filename. If `nil', then the name under
  383. which the user is logged in is used. If non-`nil' but not a string, the
  384. user is prompted for the name. The default is `nil'.
  385.  
  386.    `ange-ftp-default-password': The password to use when the user is the
  387. same as `ange-ftp-default-user'. The default is `nil'.
  388.  
  389.    `ange-ftp-default-account': Account password to use when the user is
  390. the same as `ange-ftp-default-user'. The default is `nil'.
  391.  
  392.    `ange-ftp-generate-anonymous-password': If this is `t', then
  393. ange-ftp will generate a password of the form `your_username@local_host'
  394. when you specify a username of `anonymous' in the filename (or if you
  395. are automatically logged in as `anonymous'). If this is a string, then
  396. that string is used instead. If it is `nil', then the user is prompted
  397. for a password. The default is `nil'.
  398.  
  399.    `ange-ftp-dumb-unix-host-regexp': The FTP servers on some machines
  400. have problems if the `ls' command is used. The usual indication that
  401. something is wrong is when ange-ftp erroneously thinks that a directory
  402. is just a plain file. The routine `ange-ftp-add-dumb-unix-host' can can
  403. be called to tell ange-ftp to limit itself to the `DIR' command and not
  404. `ls' for a given host (but this change will take effect for the current
  405. GNU Emacs session only). If a large number of machines with similar
  406. hostnames have this problem then it is easier to change the value of
  407. this variable to a regexp which matches hostnames which have this
  408. problem, particularly since ange-ftp cannot automatically detect such
  409. hosts. The default is `nil'.
  410.  
  411.    `ange-ftp-binary-file-name-regexp': By default ange-ftp will
  412. transfer files in ASCII mode. If a file being transferred matches the
  413. value of this regexp then the FTP process will be toggled into BINARY
  414. mode before the transfer and back to ASCII mode after the transfer. The
  415. default is:
  416.      (concat "\\.Z$\\|\\.lzh$\\|\\.arc$\\|\\.zip$\\|\\.zoo$\\|\\.tar$\\|"
  417.              "\\.dvi$\\|\\.ps$\\|\\.elc$\\|TAGS$\\|"
  418.          "\\.gif$\\|\\.EXE\\(;[0-9]+\\)?$")
  419.  
  420.    `ange-ftp-hash-mark-size': Ange-ftp by default requests that the FTP
  421. process sends hash marks (just `#' characters) during transfers to keep
  422. track of how much data has been sent or received. This variable, if
  423. non-`nil', should be the number of kilobytes represented by the FTP
  424. client's hash mark. The default value of 1 doesn't work for me -- I use
  425. 2 instead.
  426.  
  427.    `ange-ftp-process-verbose': If this is `t' then ange-ftp will be
  428. chatty about interaction with the FTP process. The default is `t'.
  429.  
  430.    `ange-ftp-ftp-program-name': This should be the name of the FTP
  431. program to run on the local host. The default value of `"ftp"' should
  432. be fine for most systems.
  433.  
  434.    `ange-ftp-gateway-ftp-program-name': Same as above, but this time
  435. it's the name of the program to be used if a gateway is in use. The
  436. default is again `"ftp"', but some AT&T folks claim to use something
  437. called `"pftp"' here.
  438.  
  439.    `ange-ftp-make-backup-files': A list of operating systems for which
  440. ange-ftp will make Emacs backup files on the remote host. For example,
  441. `'(unix)' makes sense, but `'(unix vms)' or `'(vms)' would be silly,
  442. since VMS makes its own backups.  The host type is determined by the
  443. function `ange-ftp-host-type'.  Possible host types are: `dumb-unix';
  444. `vos'; `vms'; `mts'; and `unix'. The default of `nil' means make no
  445. backups on remote hosts.
  446.  
  447.    `ange-ftp-path-format': This variable dictates the the format of a
  448. fully expanded remote pathname. This is a cons `(REGEXP . (HOST USER
  449. PATH))', where `REGEXP' is a regular expression matching the full
  450. remote pathname, and `HOST', `USER', and `PATH' are the numbers of
  451. parenthesised expressions in `REGEXP' for the components (in that
  452. order). The syntax can be customised with this variable to a certain
  453. extent, but there are limitations. The default is
  454. `'("^/\\(\\([^@/:]*\\)@\\)?\\([^@/:]*\\):\\(.*\\)" . (3 2 4))'.
  455.  
  456.    `ange-ftp-multi-msgs': A regular expression matching messages from
  457. the ftp process that start a multiline reply. The default is
  458. `"^220-\\|^230-\\|^226\\|^25.-\\|^221-\\|^200-\\|^530-\\|^4[25]1-"'
  459.  
  460.    `ange-ftp-good-msgs': A regular expression matching messages from
  461. the ftp process that indicate that the action that was initiated has
  462. completed successfully. The default is `"^220 \\|^230 \\|^226\\|^25.
  463. \\|^221 \\|^200 \\|^[Hh]ash mark"'.
  464.  
  465.    `ange-ftp-skip-msgs': A regular expression matching messages from
  466. the ftp process that can be ignored. The default is
  467.      (concat "^200 \\(PORT\\|Port\\) \\|^331 \\|^150 \\|^350 \\|^[0-9]+ bytes \\|"
  468.              "^Connected \\|^$\\|^Remote system\\|^Using\\|^ \\|Password:\\|"
  469.              "^local:\\|^Trying\\|^125 \\|^550-")
  470.  
  471. but you might need to tweak it if ange-ftp is giving up when it
  472. shouldn't.
  473.  
  474.    `ange-ftp-fatal-msgs': A regular expression matching messages from
  475. the FTP process that indicate something has gone drastically wrong
  476. attempting the action that was initiated and that the FTP process should
  477. (or already has) been killed. The default is
  478.      (concat "^ftp: \\|^Not connected\\|^530 \\|^4[25]1 \\|rcmd: \\|"
  479.              "^No control connection\\|unknown host\\|^lost connection")
  480.  
  481.    `ange-ftp-gateway-fatal-msgs': Regular expression matching messages
  482. from the rlogin / telnet process that indicates that logging in to the
  483. gateway machine has gone wrong. The default is
  484.      "No route to host\\|Connection closed\\|No such host\\|Login incorrect"
  485.  
  486.    `ange-ftp-tmp-name-template': This should be a directory and a
  487. filename prefix indicating where ange-ftp should make temporary files.
  488. The default of `"/tmp/ange-ftp"' should be fine for most systems.
  489.  
  490.    `ange-ftp-retry-time': Number of seconds to wait before retrying if
  491. a file or listing doesn't arrive. For slow connections, you might get a
  492. "listing unreadable" error messages or an empty buffer for a file that
  493. you know has something in it.  The solution is to increase the value of
  494. `ange-ftp-retry-time'.  Its default value is 5 which is plenty for
  495. reasonable connections.  However, for some transatlantic connections 20
  496. might be a better value.
  497.  
  498. 
  499. File: ange-ftp.info,  Node: Using ange-ftp,  Next: Getting help,  Prev: Installing ange-ftp,  Up: Top
  500.  
  501. Using ange-ftp
  502. **************
  503.  
  504.    Once you have ange-ftp installed, you never need worry about using
  505. FTP again. The interface is completely transparent, and you may now use
  506. Emacs commands such as `C-x C-f' (`find-file') on *any* file that your
  507. local host (or, if you are using one) your gateway can access. That
  508. file may be a regular file (for editing, viewing etc.), a directory
  509. (for invoking Dired) or even a symbolic link (pointing to a directory
  510. or a regular file). All it takes is an extended filename syntax. For
  511. example, if you give the filename
  512.      /ange@anorman:/tmp/notes
  513.  
  514. to `find-file', then ange-ftp will spawn an FTP process, connect to the
  515. host `anorman' as user `ange', get the file `/tmp/notes' and pop up a
  516. buffer containing the contents of that file as if it were on the local
  517. filesystem.  If ange-ftp needed a password to connect then it would
  518. prompt the user in the minibuffer.  From then on you can edit that file
  519. as if it were any other file: saving is with `C-x C-s' as usual -- in
  520. fact, everything is as usual.
  521.  
  522.    Ange-ftp is also extremely useful for regular "file-transfer" FTP
  523. jobs.  Since Dired also works on remote directories when using
  524. ange-ftp, you will be able to browse the filesystem on your favourite
  525. archive site with consummate ease.
  526.  
  527. * Menu:
  528.  
  529. * Remote filenames::        The ange-ftp extended filename syntax.
  530. * Using Dired::            Browsing directories.
  531. * Using a .netrc::        Preventing password pestering.
  532. * Ange-ftp commands::        Interactive commands supplied by ange-ftp.
  533. * DL support::            For hosts using descriptive directory listings.
  534. * Non-Unix Hosts::        Some hosts have funny filenames.
  535. * Completion::            On filenames and hostnames.
  536. * Accessing the FTP process::   For when manual tinkering is needed.
  537.  
  538. 
  539. File: ange-ftp.info,  Node: Remote filenames,  Next: Using Dired,  Up: Using ange-ftp
  540.  
  541. Remote filename syntax
  542. ======================
  543.  
  544.    The general form of the extended filename syntax is
  545.      /user@host:path
  546.  
  547. which refers to the file pointed to by `path' on machine `host' when
  548. logging in as user `user'. When `path' is supplied as a relative
  549. file-name (that is, without a leading `/') it is relative to `user''s
  550. home directory (although such relative filenames are ultimately
  551. converted to absolute ange-ftp pathnames). You may even refer to home
  552. directories of users on remote Unix sites using the standard tilde `~'
  553. notation.  `host' needs to be the fully qualified pathname if the local
  554. or gateway machine requires it to be (however hostname completion is
  555. available if it is included in your `.netrc' - *Note Using a .netrc::),
  556. or it may be an IP number if your nameserver can't find the site. The
  557. `user@' part may be omitted, in which case the username is chosen on
  558. the basis of the variable `ange-ftp-default-user' (*Note Other
  559. options::) and your `.netrc'. If a password is requested by the FTP
  560. process, ange-ftp will either prompt you for it, or generate one on the
  561. basis of the variables `ange-ftp-default-password', and your `.netrc'.
  562.  
  563.    Thus the following are all valid ange-ftp filenames:
  564.      /anonymous@waldo.uranium.com:pub/games/wumpus
  565.      /root@127.44.3.1:/etc/passwd
  566.      /jbrown@freddie.ucla.edu:~mblack/
  567.      /alpha.gnu.ai.mit.edu:ange-ftp/ange-ftp.tar.Z
  568.  
  569. 
  570. File: ange-ftp.info,  Node: Using Dired,  Next: Using a .netrc,  Prev: Remote filenames,  Up: Using ange-ftp
  571.  
  572. Using Dired
  573. ===========
  574.  
  575.    This feature of ange-ftp is particularly useful when file-transfers,
  576. as opposed to file-editing, are the order of the day. Simply run
  577. `find-file' on a directory to get a listing of the files in that
  578. directory. For example, you might run `find-file' on
  579.      /anonymous@archive.site.com:pub
  580.  
  581. to see what's in the `pub' directory of your favourite archive site.
  582. This brings up a Dired buffer of all the files in that directory.  The
  583. `f' command is useful for looking at `README' files -- if you then
  584. decide to save it `C-x C-w' is useful. You can also use this method to
  585. copy files, but the `c' command is easier. The `f' command can also be
  586. used to descend the directory tree by applying it to directories.
  587.  
  588.    You can also use Dired to refresh ange-ftp's internal cache. If you
  589. (or anybody else) has changed a remote directory since you first
  590. accessed it with ange-ftp, completion is not provided on any new files
  591. that ange-ftp does not know about. If you have (or create) a Dired
  592. buffer which contains the modified directory, executing `revert-buffer'
  593. with a prefix argument (`C-u g' in the Dired buffer) will force a
  594. refresh of both the the buffer *and also ange-ftp's internal cache*. If
  595. you find that filename completion isn't working on a file that you
  596. *know* is there, this is how to fix the problem.
  597.  
  598.    The version of Dired supplied with Emacs version 18.58 (and earlier
  599. versions) does not include a capability for multiple file transfers. The
  600. Tree Dired package (*Note Obtaining source code::), however, is ideal
  601. for this application. Tree Dired provides facilities for maintaining an
  602. entire directory tree in a Dired buffer, for marking files which match a
  603. certain regexp (or you can select files interactively) and then copying
  604. all those files to your local host (or even a different remote host).
  605. Another useful feature is Virtual Dired, which allows you to save Dired
  606. buffers of remote hosts, allowing you to browse them at a later date
  607. without actually needing to connect to the host. See the documentation
  608. for Tree Dired for more details.
  609.  
  610.    Since ange-ftp is mostly transparent, modifying Dired or Tree Dired
  611. by means of hooks or keybindings should still work.
  612.  
  613. 
  614. File: ange-ftp.info,  Node: Using a .netrc,  Next: Ange-ftp commands,  Prev: Using Dired,  Up: Using ange-ftp
  615.  
  616. Using a .netrc file
  617. ===================
  618.  
  619.    Being prompted for passwords all the time can get rather annoying,
  620. but there is a way to fix the problem -- a `.netrc' (but *Note Other
  621. options:: and `ange-ftp-netrc-filename' if you want another filename)
  622. file in your home directory. Basically, this is a file (in the format
  623. of Unix `netrc(5)') which contains the names of all the machines you
  624. regularly login to, as well as the username and password you use for
  625. that machine. You can also supply an account password, if required.
  626.  
  627.    Your `.netrc' file consists of lines of the form
  628.      machine <machine-name> login <user-name> password <password>
  629.  
  630. It doesn't all have to be on the one line, though: any `login' or
  631. `password' commands in the file refer to the previous `machine'
  632. command. You can also have `account <account-passwd>' commands if you
  633. need special account passwords.
  634.  
  635.    For example, you might have the following line in your `.netrc':
  636.      machine Y.local.lan.edu login myname password secret
  637.  
  638. Then if you run `find-file' on the file `/Y.local.lan.edu:somefile' you
  639. will automatically be logged in as user `myname' with password
  640. `secret'. You can still login under another name and password, if you
  641. so desire: just include the `user@' part of the filename.
  642.  
  643.    You may also include a default option, as follows:
  644.      default login <user-name> password <password>
  645.  
  646. which applies to any other machines not mentioned elsewhere in your
  647. `.netrc'. A particularly useful application of this is with anonymous
  648. logins:
  649.      default login myname password myname@myhost.edu
  650.  
  651. so that accessing `/anyhost:anyfile' will automatically log you in
  652. anonymously, provided the host is not mentioned in the `.netrc'.  Note
  653. also that if the value of `ange-ftp-default-user' is non-`nil', its
  654. value will have precedence over the username supplied in the default
  655. option of the `.netrc'.
  656.  
  657.    The `.netrc' file is also useful in another regard: machines
  658. included in it are provided with hostname completion. That is, for any
  659. machine in the `.netrc', you need only type a slash and the first few
  660. characters of its name and then press TAB to be logged in automatically
  661. with a username and password from the `.netrc' file.  So it's a good
  662. idea to put hosts you use regularly in your `.netrc' as well:
  663.      machine archive.site.com login anonymous password myname@X.local.lan.edu
  664.  
  665. 
  666. File: ange-ftp.info,  Node: Ange-ftp commands,  Next: DL support,  Prev: Using a .netrc,  Up: Using ange-ftp
  667.  
  668. Ange-ftp commands
  669. =================
  670.  
  671.    Ange-ftp supplies a few interactive commands to make connecting with
  672. hosts a little easier.
  673.  
  674. Command `ange-ftp-set-user': Prompts for a hostname and a username.
  675. Next time access to the host is attempted, ange-ftp will attempt to log
  676. in again with the new username.
  677.  
  678. Command `ange-ftp-set-passwd': Prompts for a hostname, user and
  679. password. Future logins to that host as that user will use the given
  680. password.
  681.  
  682. Command `ange-ftp-set-account': Prompts for a hostname, user and
  683. account. Future logins to that host as that user will use the given
  684. account.
  685.  
  686.    Note that the effects of the above three commands only last the
  687. duration of the current Emacs session. To make their effects permanent,
  688. you may include them as lisp code in your `.emacs':
  689.      (ange-ftp-set-user HOST USER)
  690.      (ange-ftp-set-password HOST USER PASSWORD)
  691.      (ange-ftp-set-account HOST USER ACCOUNT)
  692.  
  693. This is an alternative to using a `.netrc'; *Note Using a .netrc::.
  694.  
  695. Command `ange-ftp-kill-ftp-process': kill the FTP process associated
  696. with a given buffer's filename (by default the current buffer). This is
  697. an easy way to achieve a resynch: any future accesses to the remote
  698. host will cause the FTP process to be recreated.
  699.  
  700. 
  701. File: ange-ftp.info,  Node: DL support,  Next: Non-Unix Hosts,  Prev: Ange-ftp commands,  Up: Using ange-ftp
  702.  
  703. Descriptive directory listings
  704. ==============================
  705.  
  706.    Some hosts (such as `cs.uwp.edu') now use descriptive directory
  707. listings (which in fact contain *less* information than the standard
  708. listing!) when issued the `ls' command, and ange-ftp has been modified
  709. to cope with this. Ange-ftp can detect such listings, but if you
  710. regularly use a remote host which uses this extended listing format you
  711. should set the variable `ange-ftp-dl-dir-regexp' to a regular
  712. expression which matches directories using the extended listing format.
  713. You shouldn't anchor the regexp with `$' - that way the regexp will
  714. match subdirectories as well.  Alternatively, you can use the
  715. interactive command `ange-ftp-add-dl-dir' to temporarily add a remote
  716. directory for this Emacs session only.
  717.  
  718.    Tree Dired has been modified to work with such descriptive listings.
  719.  
  720. 
  721. File: ange-ftp.info,  Node: Non-Unix Hosts,  Next: Completion,  Prev: DL support,  Up: Using ange-ftp
  722.  
  723. Using ange-ftp with non-Unix hosts
  724. ==================================
  725.  
  726.    Ange-ftp also works with some non-Unix hosts, although not
  727. necessarily with all the features available with Unix hosts. VMS, CMS,
  728. and MTS systems will all now work with ange-ftp and Tree Dired (although
  729. Classical Dired may well be broken on such systems.) Filename completion
  730. also now works on these hosts.
  731.  
  732.    Ange-ftp should be able to automatically detect which type of host
  733. you are using (VMS, CMS or MTS), but if it is unable to do so you can
  734. fix the problem by setting the appropriate `ange-ftp-TYPE-host-regexp'
  735. variable (where `TYPE' is one of `vms', `cms' or `mts') - see below. If
  736. ange-ftp is unable to automatically detect any VMS, CMS or MTS host,
  737. please report this as a bug: *Note Bugs::.
  738.  
  739.    In all cases the file-name conventions of the remote host are
  740. converted to a UNIX-ish format, and this is the format you should use
  741. to find files on such hosts.
  742.  
  743. * Menu:
  744.  
  745. * VMS support::        Using ange-ftp with VMS systems
  746. * CMS support::        Using ange-ftp with CMS systems
  747. * MTS support::        Using ange-ftp with MTS systems
  748.  
  749. 
  750. File: ange-ftp.info,  Node: VMS support,  Next: CMS support,  Up: Non-Unix Hosts
  751.  
  752. VMS support
  753. -----------
  754.  
  755.    VMS filenames are of the form `FILE.TYPE;##', where both `FILE' and
  756. `TYPE' can be up to 39 characters long, and `##' is an integer version
  757. number between 1 and 32,767. Valid characters in filenames are `A'-`Z',
  758. `0'-`9', `_', `-' and `$', however `$' cannot begin a filename and `-'
  759. cannot be used as the first or last character.
  760.  
  761.    Directories in VMS are converted to the standard UNIX `/' notation.
  762. For example, the VMS filename
  763.      PUB$:[ANONYMOUS.SDSCPUB.NEXT]README.TXT;1
  764.    would be entered as
  765.  
  766.      /PUB$$:/ANONYMOUS/SDSCPUB/NEXT/README.TXT;1
  767.  
  768. (The double `$' is required to prevent Emacs from attempting to expand
  769. an environment variable.)  Similarly, to anonymously FTP the file
  770. `[.CSV.POLICY]RULES.MEM;1' from `ymir.claremont.edu' you would type
  771. `C-x C-f /anonymous@ymir.claremont.edu:CSV/POLICY/RULES.MEM;1'. You can
  772. always drop off the `;##' part at the end of the filename to get the
  773. latest version.
  774.  
  775.    Sandy Rutherford provides some tips for using VMS hosts:
  776.    * Although VMS is not case sensitive, EMACS running under UNIX is.
  777.      Therefore, to access a VMS file, you must enter the filename with
  778.      upper case letters.
  779.  
  780.    * To access the latest version of file under VMS, you use the
  781.      filename without the `;' and version number. You should always
  782.      edit the latest version of a file. If you want to edit an earlier
  783.      version, copy it to a new file first. This has nothing to do with
  784.      ange-ftp, but is simply good VMS operating practice. Therefore, to
  785.      edit `FILE.TXT;3' (say 3 is latest version), do `C-x C-f
  786.      /ymir.claremont.edu:FILE.TXT'. If you inadvertently do
  787.           `C-x C-f /ymir.claremont.edu:FILE.TXT;3'
  788.  
  789.      you will find that VMS will not allow you to save the file because
  790.      it will refuse to overwrite `FILE.TXT;3', but instead will want to
  791.      create `FILE.TXT;4', and attach the buffer to this file. To get
  792.      out of this situation, `M-x write-file
  793.      /ymir.claremont.edu:FILE.TXT' will attach the buffer to latest
  794.      version of the file. For this reason, in Tree Dired `f'
  795.      (`dired-find-file'), always loads the file sans version, whereas
  796.      `v', (`dired-view-file'), always loads the explicit version
  797.      number. The reasoning being that it reasonable to view old
  798.      versions of a file, but not to edit them.
  799.  
  800.    * VMS filenames often contain `$' characters: make sure you always
  801.      quote these as `$$' and watch out for the Emacs bug which fails to
  802.      quote `$''s when defaults are presented in the minibuffer: see
  803.      *Note Bugs::.
  804.  
  805.    Ange-ftp should automatically detect that you are using a VMS host.
  806. If it fails to do so (which should be reported as a bug) you can use the
  807. command `ange-ftp-add-vms-host' to inform ange-ftp manually. For a more
  808. permanent effect, or if you use a VMS host regularly, it's a good idea
  809. to set `ange-ftp-vms-host-regexp' to a regular expression matching that
  810. host's name. For instance, if use use `ymir.claremont.edu' a lot, place
  811. the following in your .emacs:
  812.      (setq ange-ftp-vms-host-regexp "^ymir.claremont.edu$")
  813.  
  814. 
  815. File: ange-ftp.info,  Node: CMS support,  Next: MTS support,  Prev: VMS support,  Up: Non-Unix Hosts
  816.  
  817. CMS support
  818. -----------
  819.  
  820.    Ange-ftp has full support, including Tree Dired support, for hosts
  821. running CMS.
  822.  
  823.    CMS filenames are entered in a UNIX-y way. Minidisks are treated as
  824. UNIX directories; for example to access the file `READ.ME' in minidisk
  825. `*.311' on `cuvmb.cc.columbia.edu', you would enter
  826.      /anonymous@cuvmb.cc.columbia.edu:/*.311/READ.ME
  827.    If `*.301' is the default minidisk for this account, you could access
  828. `FOO.BAR' on this minidisk as
  829.      /anonymous@cuvmb.cc.columbia.edu:FOO.BAR
  830.    CMS filenames are of the form `FILE.TYPE', where both `FILE' and
  831. `TYPE' can be up to 8 characters. Again, beware that CMS filenames are
  832. always upper case, and hence must be entered as such.
  833.  
  834.    Sandy Rutherford provides some tips on using CMS hosts:
  835.    * CMS machines, with the exception of anonymous accounts, nearly
  836.      always need an account password. To have ange-ftp send an account
  837.      password, you can either include it in your `.netrc' (*Note Using
  838.      a .netrc::), or use `ange-ftp-set-account'.
  839.  
  840.    * Ange-ftp cannot send "write passwords" for a minidisk. Hopefully,
  841.      we can fix this.
  842.  
  843.    Ange-ftp should automatically detect that you are using a CMS host.
  844. If it fails to do so (which should be reported as a bug) you can use the
  845. command `ange-ftp-add-cms-host' to inform ange-ftp manually. For a more
  846. permanent effect, or if you use a CMS host regularly, it's a good idea
  847. to set `ange-ftp-cms-host-regexp' to a regular expression matching that
  848. host's name.
  849.  
  850. 
  851. File: ange-ftp.info,  Node: MTS support,  Prev: CMS support,  Up: Non-Unix Hosts
  852.  
  853. MTS support
  854. -----------
  855.  
  856.    Ange-ftp has full support, including Tree Dired support, for hosts
  857. running the Michigan terminal system, and should be able to
  858. automatically recognise any MTS machine.
  859.  
  860.    MTS filenames are entered in a UNIX-y way. For example, if your
  861. account was `YYYY', the file `FILE' in the account `XXXX:' on
  862. `mtsg.ubc.ca' would be entered as
  863.      /YYYY@mtsg.ubc.ca:/XXXX:/FILE
  864.    In other words, MTS accounts are treated as UNIX directories. Of
  865. course, to access a file in another account, you must have access
  866. permission for it.  If `FILE' were in your own account, then you could
  867. enter it in a relative path fashion as
  868.      /YYYY@mtsg.ubc.ca:FILE
  869.    MTS filenames can be up to 12 characters. Like UNIX, the structure
  870. of the filename does not contain a type (i.e. it can have as many `.''s
  871. as you like.) MTS filenames are always in upper case, and hence be sure
  872. to enter them as such! MTS is not case sensitive, but an EMACS running
  873. under UNIX is.
  874.  
  875.    Ange-ftp should automatically detect that you are using an MTS host.
  876. If it fails to do so (which should be reported as a bug) you can use the
  877. command `ange-ftp-add-mts-host' to inform ange-ftp manually. For a more
  878. permanent effect, or if you use an MTS host regularly, it's a good idea
  879. to set `ange-ftp-mts-host-regexp' to a regular expression matching that
  880. host's name.
  881.  
  882. 
  883. File: ange-ftp.info,  Node: Completion,  Next: Accessing the FTP process,  Prev: Non-Unix Hosts,  Up: Using ange-ftp
  884.  
  885. File- and host-name completion
  886. ==============================
  887.  
  888.    Full filename completion is supported on all remote UNIX hosts and
  889. some non-Unix hosts.  Hostnames also have completion if they are
  890. mentioned in the `.netrc' and no username is specified. However using
  891. the filename completion feature can be a bit of a two edged sword.
  892.  
  893.    To understand why, we need to discuss how ange-ftp works. Whenever
  894. ange-ftp is asked to find a remote file (or directory) an `ls' command
  895. is sent to the FTP process to list all the files in the directory. This
  896. list is maintained in an internal cache, to provide filename completion
  897. for later requests on that directory. Ange-ftp keeps this cache
  898. up-to-date by monitoring Emacs commands which affect files and
  899. directories, but if a process outside Emacs (such as another user)
  900. changes a directory (e.g. a new file is added) completion won't work on
  901. that file since ange-ftp doesn't know about it yet. The solution if to
  902. force ange-ftp to reread the directory and update it's cache, and the
  903. easiest way to do that is with Dired -- *Note Using Dired:: to see how.
  904.  
  905.    Another problem is that the `ls' command can take a long time,
  906. especially when dealing with distant hosts over slow links. So if you're
  907. after a file in the `pub/images' directory but nothing else, it's a
  908. better idea to type `pub/images/file TAB' than `pub/im TAB' which will
  909. force a read of the `pub' directory (since ange-ftp needs to know how
  910. to complete `im'). A little extra typing can often save a lot of
  911. waiting. Don't be afraid to use the TAB key once the directory is
  912. cached, though.
  913.  
  914. 
  915. File: ange-ftp.info,  Node: Accessing the FTP process,  Prev: Completion,  Up: Using ange-ftp
  916.  
  917. Accessing the FTP process buffer
  918. ================================
  919.  
  920.    The FTP process used to access the remote files is available for
  921. access if you wish. It will be in a buffer called `"*ftp
  922. REMOTE-FILE-NAME*"', i.e. if you found the file
  923.      /anonymous@archive.site.com:pub/README
  924.  
  925. there will be a buffer
  926.      *ftp anonymous@archive.site.com*
  927.  
  928. where all the transfers are taking place. You can have a look at the
  929. buffer using `C-x b' as usual, and even type in commands to the FTP
  930. process under an interface very much like `shell-mode'. There are two
  931. instances when doing this can be very useful: one is accessing non-UNIX
  932. hosts, where Dired and filename completion may not work (if ange-ftp
  933. even works at all). The other is multiple (i.e. wildcard) file transfers
  934. which the standard version of Dired does not handle (but Tree Dired
  935. *does*, and is worth installing for this feature alone.)  If you are
  936. going to use `mget' or `mput', make sure you type `glob' first:
  937. ange-ftp turns globbing off by default. Don't be afraid of changing
  938. directories, either -- ange-ftp always uses absolute pathnames when
  939. communicating with the FTP process.
  940.  
  941.    You can kill the FTP process at any time simply by killing this
  942. buffer.  This won't cause ange-ftp any grief whatsoever -- if you later
  943. make another request to that host, ange-ftp will simply fire up another
  944. process and create a new buffer to hold it.
  945.  
  946. 
  947. File: ange-ftp.info,  Node: Getting help,  Next: Bugs,  Prev: Using ange-ftp,  Up: Top
  948.  
  949. Getting help
  950. ************
  951.  
  952.    Ange-ftp has its own mailing list modestly called ange-ftp-lovers
  953. where ange-ftp users discuss new features, problems, bug fixes etc.
  954. There is also another list called ange-ftp-lovers-announce which is
  955. reserved exclusively for the announcement of new versions. All users of
  956. ange-ftp are welcome to subscribe (see below) to either of these lists.
  957. New versions of ange-ftp are posted periodically to these lists.
  958.  
  959.    To [un]subscribe to ange-ftp-lovers or ange-ftp-lovers-announce, or
  960. to report mailer problems with the list, please mail one of the
  961. following addresses:
  962.      ange-ftp-lovers-request@anorman.hpl.hp.com
  963.      ange-ftp-lovers-request%anorman.hpl.hp.com@hplb.hpl.hp.com
  964.      hplb.hpl.hp.com!anorman.hpl.hp.com!ange-ftp-lovers-request
  965.      hplabs.hpl.hp.com!anorman.hpl.hp.com!ange-ftp-lovers-request
  966.  
  967. Please don't forget the `-request' part, and please make it clear in
  968. the request which mailing list you wish to join.
  969.  
  970.    For mail to be posted directly to ange-ftp-lovers, send to one of the
  971. following addresses:
  972.      ange-ftp-lovers@anorman.hpl.hp.com
  973.      ange-ftp-lovers%anorman.hpl.hp.com@hplb.hpl.hp.com
  974.      hplb.hpl.hp.com!anorman.hpl.hp.com!ange-ftp-lovers
  975.      hplabs.hpl.hp.com!anorman.hpl.hp.com!ange-ftp-lovers
  976.  
  977. The ange-ftp-lovers mailing list is archived on
  978.      ftp.reed.edu:pub/mailing-lists/ange-ftp/
  979.  
  980.    The newsgroup `gnu.emacs.help' also occasionally discusses ange-ftp.
  981.  
  982. 
  983. File: ange-ftp.info,  Node: Bugs,  Next: Concept Index,  Prev: Getting help,  Up: Top
  984.  
  985. Bugs and Wish List
  986. ******************
  987.  
  988.    Here is a list of the known bugs in ange-ftp:
  989.  
  990.    * Be warned that files created by using ange-ftp will take account
  991.      of the umask of the ftp daemon process rather than the umask of
  992.      the creating user.  This is particulary important when logging in
  993.      as the root user.  The way that I tighten up the ftp daemon's
  994.      umask under HP-UX is to make sure that the umask is changed to 027
  995.      before I spawn `/etc/inetd'.  I suspect that there is something
  996.      similar on other systems.
  997.  
  998.    * Some combinations of FTP clients and servers break and get out of
  999.      sync when asked to list a non-existent directory.  Some of the
  1000.      `ai.mit.edu' machines cause this problem for some FTP clients.
  1001.  
  1002.    * Ange-ftp does not check to make sure that when creating a new file,
  1003.      you provide a valid filename for the remote operating system.  If
  1004.      you do not, then the remote FTP server will most likely translate
  1005.      your filename in some way. This may cause ange-ftp to get confused
  1006.      about what exactly is the name of the file. The most common causes
  1007.      of this are using lower case filenames on systems which support
  1008.      only upper case, and using filenames which are too long.
  1009.  
  1010.    * Null (blank) passwords confuse both ange-ftp and some FTP daemons.
  1011.  
  1012.    * ange-ftp likes to use pty's to talk to its FTP processes. If GNU
  1013.      Emacs creates a FTP process that only talks via pipes (for
  1014.      example, if `process-connection-type' is `nil') then ange-ftp
  1015.      won't be getting the information it requires at the time that it
  1016.      wants it since pipes flush at different times to pty's. One
  1017.      disgusting way around this problem is to talk to the FTP process
  1018.      via rlogin which does the `right' things with pty's.
  1019.  
  1020.    * You need to quote `$' characters in filenames by using `$$'
  1021.      instead. This isn't actually a bug, but rather an Emacs convention
  1022.      (which allows environment variables in filenames.) What *is* an bug
  1023.      is that when filenames containing `$''s are inserted in the
  1024.      minibuffer as defaults, the `$' is not converted into the `$$'
  1025.      quoted form -- hopefully this will be fixed in version 19. It
  1026.      doesn't usually bother Unix users, but VMS filenames often contain
  1027.      `$'.  Incidentally, Sebastian Kremer's `gmhist' package (which
  1028.      comes with the Tree Dired distribution: *Note Obtaining source
  1029.      code::) fixes this bug.
  1030.  
  1031.    * Some hosts (notably ULTRIX) mark symbolic links with a `@'
  1032.      character in an `ls -F' listing. The variable
  1033.      `dired-ls-F-marks-symlinks' when set to `t' (the default) alerts
  1034.      Dired to this behaviour and everything is OK. Enabling this
  1035.      behaviour by default is not generally a problem on hosts which
  1036.      does *not* mark symlinks in this way, but if you have
  1037.      `dired-ls-F-marks-symlinks' set to `t' while accessing a such a
  1038.      host, then Dired will think that a symbolic link whose name ends
  1039.      in `@' (a strange thing indeed!) is a regular file. The fix (other
  1040.      than setting `dired-ls-F-marks-symlinks to' `nil', a bad idea if
  1041.      you regularly access hosts who mark symbolic links) is to remove
  1042.      `F' from the `ls' listing switches (use `C-u s' in the Dired
  1043.      buffer.)
  1044.  
  1045.      Another problem with symbolic links arises with hosts who do not
  1046.      show the linked file with `->' in the listing, meaning that Dired
  1047.      will not recognize the symlink. The solution here is to get a
  1048.      decent `ls' program on that machine.
  1049.  
  1050.    * No classic dired support for non-UNIX systems. Tree dired was
  1051.      enough.
  1052.  
  1053.    * If a directory listing is attempted for an empty directory on (at
  1054.      least some) VMS hosts, an ftp error is given. This is really an
  1055.      ftp bug, and I don't know how to get ange-ftp work to around it.
  1056.  
  1057.    * Bombs on filenames that start with a space. Deals well with
  1058.      filenames containing spaces, but beware that the remote ftpd may
  1059.      not like them much.
  1060.  
  1061.    * Doesn't autosave. Maybe someone could implement auto-saving on the
  1062.      local host ...
  1063.  
  1064.    * The code to do compression of files over ftp is not as careful as
  1065.      it should be. It deletes the old remote version of the file, before
  1066.      actually checking if the local to remote transfer of the
  1067.      compressed file succeeds. Of course to delete the original version
  1068.      of the file after transferring the compressed version back is also
  1069.      dangerous, because some OS's have severe restrictions on the
  1070.      length of filenames, and when the compressed version is copied
  1071.      back the `-Z' or `.Z' may be truncated. Then, ange-ftp would
  1072.      delete the only remaining version of the file. Maybe ange-ftp
  1073.      should make backups when it compresses files?
  1074.  
  1075.    * Remote to remote copying of files on non-Unix machines can be
  1076.      risky. Depending on the variable
  1077.      `ange-ftp-binary-file-name-regexp', ange-ftp will use binary mode
  1078.      for the copy. Between systems of different architecture, this still
  1079.      may not be enough to guarantee the integrity of binary files.
  1080.      Binary file transfers from VMS machines are particularly
  1081.      problematical.
  1082.  
  1083.    * Some CMS machines do not assign a default minidisk when you ftp
  1084.      them as anonymous. It is then necessary to guess a valid minidisk
  1085.      name, and `cd' to it.  This is (understandably) beyond ange-ftp;
  1086.      however Sebastian Kremer says:
  1087.           It is beyond ange-ftp, but if the `init' ftp macro were
  1088.           supported, one could write the appropriate `cd' command into
  1089.           that.  I used to do that on a CMS machine I had an account on
  1090.           because I never could remember the name of the minidisk.  I
  1091.           think I even had to give an `account' command, too.
  1092.           Supporting `init' would be a very handy thing.
  1093.  
  1094.           Hmm, why start `ftp(1)' with the `-n' flag at all?
  1095.  
  1096.    * For CMS support, we send too many `cd''s. Since `cd''s are cheap,
  1097.      I haven't worried about this too much. Eventually, we should have
  1098.      some caching of the current minidisk.
  1099.  
  1100.    If you find any bugs or problems with this package, *please* e-mail
  1101. the author. Ideas and constructive comments are especially welcome. So
  1102. are any enhancements to ange-ftp, preferably debugged and documented.
  1103. Also welcome are any typo fixes, corrections or additions to this
  1104. manual. And just so you don't forget, here's Ange's address again:
  1105.      ange@hplb.hpl.hp.com
  1106.  
  1107. Enjoy!
  1108.  
  1109. 
  1110. File: ange-ftp.info,  Node: Concept Index,  Next: Variable and command index,  Prev: Bugs,  Up: Top
  1111.  
  1112. Concept Index
  1113. *************
  1114.  
  1115. * Menu:
  1116.  
  1117. * anonymous FTP:                        Using a .netrc.
  1118. * archive sites:                        Using Dired.
  1119. * auto-saving:                          Bugs.
  1120. * backup files:                         Other options.
  1121. * buffers:                              Accessing the FTP process.
  1122. * CMS filenames:                        CMS support.
  1123. * CMS minidisks:                        Bugs.
  1124. * compressing files:                    Bugs.
  1125. * copying:                              Bugs.
  1126. * descriptive directory listings:       DL support.
  1127. * Emacs-Lisp Archive:                   Obtaining source code.
  1128. * extended directory listings:          DL support.
  1129. * filename completion:                  Using Dired.
  1130. * FTP processes:                        Accessing the FTP process.
  1131. * home directories of other users:      Remote filenames.
  1132. * hostname completion:                  Using a .netrc.
  1133. * HP-UX:                                Using a gateway.
  1134. * IP numbers:                           Remote filenames.
  1135. * listing unreadable error:             Other options.
  1136. * load path:                            Installing source.
  1137. * MTS filenames:                        MTS support.
  1138. * multiple file transfers:              Accessing the FTP process.
  1139. * multiple file transfers:              Using Dired.
  1140. * NFS:                                  Using a gateway.
  1141. * numeric Internet addresses:           Remote filenames.
  1142. * other users' home directories:        Remote filenames.
  1143. * process buffers:                      Accessing the FTP process.
  1144. * processes:                            Accessing the FTP process.
  1145. * pty:                                  Bugs.
  1146. * remote shell:                         Using a gateway.
  1147. * smart gateways:                       Using a gateway.
  1148. * symbolic links:                       Bugs.
  1149. * symbolic links:                       Using ange-ftp.
  1150. * tcsh:                                 Using a gateway.
  1151. * temporary files:                      Other options.
  1152. * temporary files:                      Using a gateway.
  1153. * Tree Dired, source:                   Obtaining source code.
  1154. * ULTRIX:                               Bugs.
  1155. * umask:                                Bugs.
  1156. * virtual dired:                        Using Dired.
  1157. * VMS filenames:                        VMS support.
  1158. * wildcards:                            Accessing the FTP process.
  1159. * wildcards:                            Using Dired.
  1160.  
  1161. 
  1162. File: ange-ftp.info,  Node: Variable and command index,  Prev: Concept Index,  Up: Top
  1163.  
  1164. Variable and command index
  1165. **************************
  1166.  
  1167. * Menu:
  1168.  
  1169. * ange-ftp-add-cms-host:                CMS support.
  1170. * ange-ftp-add-dl-dir:                  DL support.
  1171. * ange-ftp-add-dumb-unix-host:          Other options.
  1172. * ange-ftp-add-mts-host:                MTS support.
  1173. * ange-ftp-add-vms-host:                VMS support.
  1174. * ange-ftp-binary-file-name-regexp:     Other options.
  1175. * ange-ftp-cms-host-regexp:             CMS support.
  1176. * ange-ftp-default-account:             Other options.
  1177. * ange-ftp-default-password:            Remote filenames.
  1178. * ange-ftp-default-password:            Other options.
  1179. * ange-ftp-default-user:                Other options.
  1180. * ange-ftp-default-user:                Using a .netrc.
  1181. * ange-ftp-default-user:                Remote filenames.
  1182. * ange-ftp-dl-dir-regexp:               DL support.
  1183. * ange-ftp-dumb-unix-host-regexp:       Other options.
  1184. * ange-ftp-fatal-msgs:                  Other options.
  1185. * ange-ftp-ftp-program-name:            Other options.
  1186. * ange-ftp-gateway-fatal-msgs:          Other options.
  1187. * ange-ftp-gateway-ftp-program-name:    Other options.
  1188. * ange-ftp-gateway-host:                Using a gateway.
  1189. * ange-ftp-gateway-program:             Using a gateway.
  1190. * ange-ftp-gateway-program-interactive: Using a gateway.
  1191. * ange-ftp-gateway-prompt-pattern:      Using a gateway.
  1192. * ange-ftp-gateway-setup-term-command:  Using a gateway.
  1193. * ange-ftp-gateway-tmp-name-template:   Using a gateway.
  1194. * ange-ftp-generate-anonymous-password: Other options.
  1195. * ange-ftp-good-msgs:                   Other options.
  1196. * ange-ftp-hash-mark-size:              Other options.
  1197. * ange-ftp-kill-ftp-process:            Ange-ftp commands.
  1198. * ange-ftp-local-host-regexp:           Using a gateway.
  1199. * ange-ftp-make-backup-files:           Other options.
  1200. * ange-ftp-mts-host-regexp:             MTS support.
  1201. * ange-ftp-multi-msgs:                  Other options.
  1202. * ange-ftp-netrc-filename:              Other options.
  1203. * ange-ftp-netrc-filename:              Using a .netrc.
  1204. * ange-ftp-path-format:                 Other options.
  1205. * ange-ftp-process-verbose:             Other options.
  1206. * ange-ftp-retry-time:                  Other options.
  1207. * ange-ftp-set-account:                 Ange-ftp commands.
  1208. * ange-ftp-set-account:                 CMS support.
  1209. * ange-ftp-set-passwd:                  Ange-ftp commands.
  1210. * ange-ftp-set-user:                    Ange-ftp commands.
  1211. * ange-ftp-skip-msgs:                   Other options.
  1212. * ange-ftp-skip-msgs:                   Using a gateway.
  1213. * ange-ftp-smart-gateway:               Using a gateway.
  1214. * ange-ftp-smart-gateway-port:          Using a gateway.
  1215. * ange-ftp-tmp-name-template:           Other options.
  1216. * ange-ftp-vms-host-regexp:             VMS support.
  1217. * dired-find-file:                      VMS support.
  1218. * dired-ls-F-marks-symlinks:            Bugs.
  1219. * dired-view-file:                      VMS support.
  1220. * find-file:                            Using ange-ftp.
  1221. * gmhist:                               Bugs.
  1222. * process-connection-type:              Bugs.
  1223. * revert-buffer:                        Using Dired.
  1224. * shell-prompt-pattern:                 Using a gateway.
  1225.  
  1226.  
  1227. 
  1228. Tag Table:
  1229. Node: Top106
  1230. Node: What is ange-ftp?1235
  1231. Node: Installing ange-ftp3905
  1232. Node: Obtaining source code5036
  1233. Node: Installing source6936
  1234. Node: Using a gateway8173
  1235. Node: Other options16321
  1236. Node: Using ange-ftp22899
  1237. Node: Remote filenames24740
  1238. Node: Using Dired26221
  1239. Node: Using a .netrc28539
  1240. Node: Ange-ftp commands31015
  1241. Node: DL support32369
  1242. Node: Non-Unix Hosts33335
  1243. Node: VMS support34540
  1244. Node: CMS support37700
  1245. Node: MTS support39289
  1246. Node: Completion40716
  1247. Node: Accessing the FTP process42433
  1248. Node: Getting help43928
  1249. Node: Bugs45451
  1250. Node: Concept Index51911
  1251. Node: Variable and command index54443
  1252. 
  1253. End Tag Table
  1254.